<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui"  
      xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jsp/jstl/core">
    <h:head>
        <title>
            <h:outputText value="Sistema de Seguridad de Aplicaciones - SSA" />
        </title>
    </h:head>
    <h:body>
        <ui:composition template="/WEB-INF/facelets/templates/mainLayout.xhtml">            
            <ui:define name="menuPrincipal">
                <ui:include src="/frmMenu.xhtml"/>
            </ui:define>
            <ui:define name="content" >
                <p:blockUI block=":frmReporteOpcionesModulo:panOpcionesModulo" 
                           trigger=":frmReporteOpcionesModulo:buscarButton" 
                           widgetVar="blkPanel">
                    Espere mientras se cargan los datos<br /> 
                    <p:graphicImage value="/resource/images/loading.gif" style="width: 65px; height: 50px;"/>
                </p:blockUI>
                <h:form id="frmReporteOpcionesModulo" onkeypress="if (event.keyCode == 13) return false;">
                    <p:growl showSummary="false" showDetail="true" id="msjFiltro"/>
                    <p:panel id="panOpcionesModulo" header="Reporte de Opciones por Módulo" >
                        <table style="width:100%;" >
                            <colgroup>
                                <col width="60px;"/>
                                <col width="400px;"/>
                                <col width="90px;"/>
                                <col width="400px;"/>
                                <col width="90px;"/>
                                <col width="90px;"/>
                            </colgroup>
                            <thead>                                
                                <tr>
                                    <td>
                            <h:outputText value="Sistema:"/> 
                            </td>
                            <td>
                            <p:selectOneMenu id="lstBusSistema" 
                                             value="#{reporteOpcionesModuloController.busSistema}"
                                             style="width: 345px">
                                <f:selectItem itemValue="-99" itemLabel="(Todos)" />
                                <f:selectItems var="varSistema" 
                                               value="#{reporteOpcionesModuloController.lstSistema}" 
                                               itemValue="#{varSistema.id}"
                                               itemLabel="#{varSistema.txtModulo}" />
                                <p:ajax update="lstBusModulo" listener="#{reporteOpcionesModuloController.llenarModulo()}"/>
                                <p:ajax update="lstBusPerfil" listener="#{reporteOpcionesModuloController.llenarPerfil()}"/>
                            </p:selectOneMenu>
                            </td>
                            <td>
                            <h:outputText value="Perfil:"/> 
                            </td>
                            <td>
                            <p:selectOneMenu id="lstBusPerfil" value="#{reporteOpcionesModuloController.busPerfil}"
                                             style="width: 345px" disabled="#{empty reporteOpcionesModuloController.lstPerfil}" >
                                <f:selectItem itemValue="-99" itemLabel="(Todos)" />
                                <f:selectItems var="varPerfil" 
                                               value="#{reporteOpcionesModuloController.lstPerfil}" 
                                               itemValue="#{varPerfil.id}"
                                               itemLabel="#{varPerfil.txtPerfil}" />
                            </p:selectOneMenu>                                    
                            </td>
                            <td></td>
                            <td></td>                                    
                            </tr>

                            <tr>
                                <td>
                            <h:outputText value="Módulo:"/> 
                            </td>
                            <td>
                            <p:selectOneMenu id="lstBusModulo" 
                                             value="#{reporteOpcionesModuloController.busModulo}"
                                             style="width: 345px" disabled="#{empty reporteOpcionesModuloController.lstModulo}" >
                                <f:selectItem itemValue="-99" itemLabel="(Todos)" />
                                <f:selectItems var="varModulo" 
                                               value="#{reporteOpcionesModuloController.lstModulo}" 
                                               itemValue="#{varModulo.id}"
                                               itemLabel="#{varModulo.txtModulo}" />
                                <p:ajax update="lstBusPerfil" listener="#{reporteOpcionesModuloController.llenarPerfil()}"/>
                            </p:selectOneMenu>
                            </td>                                    
                            <td>
                            <h:outputText value="Código Usuario:"/> 
                            </td>
                            <td>
                            <p:inputText id="txtBusCodUsuario" value="#{reporteOpcionesModuloController.busCodUsuario}" style="width: 100px;" maxlength="12">                                        
                            </p:inputText>
                            </td>
                            <td style="text-align: right;">
                            <p:commandButton process="@this, lstBusSistema, lstBusModulo, lstBusPerfil, txtBusCodUsuario" 
                                             value="Procesar" icon="ui-icon-search" id="buscarButton" 
                                             update=":frmReporteOpcionesModulo:treeOpciones, msjFiltro, menuOpciones" 
                                             actionListener="#{reporteOpcionesModuloController.search}"/> 
                            </td>
                            <td style="text-align: left;">
                            <p:commandButton style="margin-right: 5px;" value="Limpiar" 
                                             actionListener="#{reporteOpcionesModuloController.limpiar}" icon="ui-icon-cancel" 
                                             update=":frmReporteOpcionesModulo"></p:commandButton>
                            </td>
                            </tr>
                            </thead>  
                            <tbody>
                                <tr>
                                    <td colspan="6">
                            <p:menubar style="width: 99%;" id="menuOpciones">
                                <p:menuitem value="Imprimir" 
                                            icon="ui-icon-print" 
                                            actionListener="#{reporteOpcionesModuloController.print(0)}" 
                                            ajax="false" 
                                            disabled="#{empty reporteOpcionesModuloController.olstOpciones}">
                                </p:menuitem>
                                <p:menuitem value="Exportar" 
                                            icon="ui-icon-extlink" 
                                            title="Exportar a Excel" 
                                            actionListener="#{reporteOpcionesModuloController.print(1)}"
                                            ajax="false"
                                            disabled="#{empty reporteOpcionesModuloController.olstOpciones}">
                                </p:menuitem>
                            </p:menubar>
                            </td>
                            </tr>
                            <tr>
                                <td colspan="6">
                                    <div style="height: 420px; overflow-y: auto;overflow-x:hidden;">
                                        <p:treeTable id="treeOpciones" 
                                                     value="#{reporteOpcionesModuloController.rootOpciones}" 
                                                     var="op" selectionMode="single" 
                                                     selection="#{reporteOpcionesModuloController.selectedOpcionNode}">
                                            <p:column headerText="Nombre Módulo / Opción / Acción" style="text-align: left; width: 600px;">
                                                <p:graphicImage styleClass="ui-treetable-toggler ui-icon ui-icon-folder-collapsed" rendered="#{op.TIPONODO eq 0}"/>
                                                <p:graphicImage styleClass="ui-treetable-toggler ui-icon ui-icon-document" rendered="#{op.TIPONODO ne 0}"/>	
                                                <h:outputText value="#{op.MODULO_GRILLA}" />
                                            </p:column>
                                            <p:column headerText="Versión" style="text-align: left; width: 60px;">
                                                <h:outputText value="#{op.VERSION}" rendered="#{op.TIPONODO eq 0}"/>                                                
                                            </p:column>
                                            <p:column headerText="Estado" style="text-align: left; width: 60px;">
                                                <p:selectBooleanCheckbox value="#{(op.TIPONODO eq 0)?op.ESTADO eq '1':op.VERSION eq '1'}" disabled="true"  />
                                            </p:column>
                                            <p:column headerText="Tipo Sistema - Modulo / Nombre Objeto Opción - Acción" 
                                                      style="text-align: left; width: 300px;">
                                                <c:if test="#{op.VERSION eq null}">
                                                    <h:outputText value="#{op.TIPO}" />
                                                </c:if>
                                            </p:column>
                                            <p:column headerText="Tipo de Acceso" style="text-align: center; width: 80px;"
                                                      rendered="#{reporteOpcionesModuloController.busCodUsuario ne '-99' or reporteOpcionesModuloController.busPerfil ne '-99' }">
                                                <p:selectBooleanCheckbox value="#{op.ESTADO eq '1'}" disabled="true" 
                                                                         rendered="#{(op.TIPONODO eq 0)?false:op.ESTADO ne null}"/>                                                
                                            </p:column>                                                
                                        </p:treeTable>
                                    </div>
                                </td>
                            </tr>
                            </tbody>
                        </table>
                    </p:panel>
                </h:form>
            </ui:define>
        </ui:composition>
    </h:body>
</html>